home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
language
/
embedded
/
mcu
/
float09.arc
/
OLDISPAT.SA
< prev
next >
Wrap
Text File
|
1987-03-04
|
5KB
|
222 lines
NAM DISPCH
TTL DISPATCH OPERATION THROUGH THE FUNCTION TABLES
*
* LINKING LOADER DEFINITONS
*
XDEF DISPAT
*
XREF FMUL
XREF FADD,CHKZER,CHKINF
XREF FDIV,DIVZER
XREF FREM
XREF FSQRT,SQINCK
XREF GETINT
XREF MAGCMP,CMPZER,CMPINF,NANCMP,INFAR1
XREF INFAR2,ARG1UN,ARG2UN,BOTHUN
XREF FFIX,BIGINT
XREF BDCNVT,OUTNDC
XREF FMOVE,MOVUN
XREF FABS,FNEG
XREF RTAR1,RTAR2,RTNAN,RTINF,RTDNAN
XREF RTZERO,NAN1,NAN3,NAN4,NAN9,NAN10
XREF ROMSTR
XREF DECBIN,FLOAT
*
* REVISION HISTORY:
*
* DATE PROGRAMMER REASON
*
* 01.JUL.80 G. STEVENS ORIGINAL
*
PAGE
***************************************************
*
* DISPAT --
* THIS SUBROUTINE USES THE FUNCTION CODE TO
* SELECTION A FUNCTION TABLE. IT THEN USES THE TYPES
* OF THE ARGUMENTS TO JUMP THROUGH THE ADDRESSES IN
* THE FUNCTION TABLE TO THE PROPER SUBROUTINE TO
* PERFORM THE FUNCTION.
*
* NO REGISTERS ARE PRESERVED; ALL RELEVANT STATE
* IS STORED IN THE STACK FRAME.
*
************************
*
* ADRTBL --
* THIS MACRO CREATES A TABLE OF ADDRESSES RELATIVE TO
* THE START OF THE ROM. IT CAN BE CALLED WITH FROM ONE TO
* FIVE ARGUMENTS, WHICH ARE THE ENTRY POINTS TO TABLES
* OR ROUTINES IN THE ROM.
*
ADRTBL MACR
IFEQ NARG-5
FDB \0-ROMSTR,\1-ROMSTR,\2-ROMSTR,\3-ROMSTR,\4-ROMSTR
EXIT
ENDC
IFEQ NARG-4
FDB \0-ROMSTR,\1-ROMSTR,\2-ROMSTR,\3-ROMSTR
EXIT
ENDC
IFEQ NARG-3
FDB \0-ROMSTR,\1-ROMSTR,\2-ROMSTR
EXIT
ENDC
IFEQ NARG-2
FDB \0-ROMSTR,\1-ROMSTR
EXIT
ENDC
IFEQ NARG-1
FDB \0-ROMSTR
EXIT
ENDC
ENDM
*
* THE FOLLOWING TABLE IS INDEXED BY THE (FUNCTION NUMBER-1)
* AND CONTAINS THE ADDRESSES OF THE FUNCTION TABLES FOR
* EACH FLOATING-POINT OPERATION.
*
FUNTBL EQU *
ADRTBL ADDTBL,SUBTBL,MULTBL,DIVTBL,REMTBL
ADRTBL CMPTBL,CMPTBL,CMPTBL,CMPTBL,SQRTBL
ADRTBL INTTBL,FIXTBL,FIXTBL,MOVTBL,BNDTBL
ADRTBL ABSTBL,NEGTBL
ADRTBL DECBIN,FLOAT,FLOAT
PAGE
*
*
* ENTER HERE ON DISPAT CALL
*
* FIRST GET THE ADDRESS OF THE TABLE FOR A PARTICULAR
* FLOATING-POINT COMMAND.
*
DISPAT EQU *
LDB FUNCT,U GET FUNCTION CODE
ANDB #$3F MASK OUT OPCODE NBR
IF B,EQ,#FCSUB
LDA ARG2,U
EORA #$80 FOR SUBTRACT, CHANGE SIGN
STA ARG2,U AND ADD
ENDIF
LEAY FUNTBL,PCR
CMPB #FCNOJP UNLESS OPERATOR HAS NO
BGE DSJMP TABLE
LDD B,Y OFFSET OF FUNCTION LOOKUP
LEAY ROMSTR,PCR
LEAY D,Y ADDR IS NOW IN Y
*
* NOW CREATE OFFSET IN OPERATION
* TABLE USING TYPES OF OPERANDS. IT IS
* ASSUMED THAT A NON-EXISTENT ARGUMENT
* HAS A TYPE OF ZERO.
*
LDA TYPE1,U
LDB #5
MUL
ADDB TYPE2,U OFFSET = TYP1*5 + TYP2
*
* NOW GET PROCESSING ROUTINE OUT
* OF OPERATION TABLE AND JSR TO IT.
*
DSJMP LDD B,Y
LEAY ROMSTR,PCR
JSR D,Y JUMP TO PROCESSING SUBROUTINE
*
* HERE IS COMMON RETURN POINT FOR ALL
* PROCESSING ROUTINES.
*
RTS
*
PAGE
*
*******************************************
*
* OPERATION DEFINITION TABLES
*
* THE FOLLOWING TABLES CONTAIN ADDRESS
* OF THE SUBROUTINES THAT OPERATE ON
* ARGUMENTS OF VARIOUS TYPES. THE TABLES
* ARE ORGANIZED BY COLUMNS, I.E. EACH
* 'ADRTBL' LINE IN A TABLE BELOW CORRESPONDS
* TO A ROW IN THE TABLE IN THE MOTOROLA SPEC.
*
MULTBL EQU *
ADRTBL FMUL,RTZERO,RTINF,RTAR1,FMUL
ADRTBL RTZERO,RTZERO,NAN9,RTAR1,RTZERO
ADRTBL RTINF,NAN9,RTINF,RTAR1,RTINF
ADRTBL RTAR2,RTAR2,RTAR2,RTDNAN,RTAR2
ADRTBL FMUL,RTZERO,RTINF,RTAR1,FMUL
*
* TABLE FOR ADD/SUBTRACT
*
ADDTBL EQU *
SUBTBL EQU *
ADRTBL FADD,FADD,RTAR1,RTAR1,FADD
ADRTBL FADD,CHKZER,RTAR1,RTAR1,RTAR1
ADRTBL RTAR2,RTAR2,CHKINF,RTAR1,RTAR2
ADRTBL RTAR2,RTAR2,RTAR2,RTDNAN,RTAR2
ADRTBL FADD,RTAR2,RTAR1,RTAR1,FADD
*
* TABLE FOR DIVISION
*
DIVTBL EQU *
ADRTBL FDIV,RTZERO,RTINF,RTAR1,FDIV
ADRTBL DIVZER,NAN4,RTINF,RTAR1,DIVZER
ADRTBL RTZERO,RTZERO,NAN4,RTAR1,RTZERO
ADRTBL RTAR2,RTAR2,RTAR2,RTDNAN,RTAR2
ADRTBL NAN4,RTZERO,RTINF,RTAR1,NAN4
*
* TABLE FOR REMAINDER
*
REMTBL EQU *
ADRTBL FREM,RTAR1,NAN10,RTAR1,FREM
ADRTBL NAN10,NAN10,NAN10,RTAR1,NAN10
ADRTBL RTAR1,RTAR1,NAN10,RTAR1,RTAR1
ADRTBL RTAR2,RTAR2,RTAR2,RTDNAN,RTAR2
ADRTBL NAN10,NAN10,NAN10,RTAR1,NAN10
*
* TABLE FOR SQUARE ROOT
*
SQRTBL EQU *
ADRTBL FSQRT,RTAR2,SQINCK,RTAR2,NAN1
*
* TABLE INTEGER PART
*
INTTBL EQU *
ADRTBL GETINT,RTAR2,RTAR2,RTAR2,GETINT
*
* TABLE FOR ALL FOUR COMPARE OPERATIONS
*
CMPTBL EQU *
ADRTBL MAGCMP,MAGCMP,INFAR1,NANCMP,ARG1UN
ADRTBL MAGCMP,CMPZER,INFAR1,NANCMP,MAGCMP
ADRTBL INFAR2,INFAR2,CMPINF,NANCMP,INFAR2
ADRTBL NANCMP,NANCMP,NANCMP,NANCMP,NANCMP
ADRTBL ARG2UN,MAGCMP,INFAR1,NANCMP,BOTHUN
*
* TABLE FOR FP-TO-BINARY INTEGER
*
FIXTBL EQU *
ADRTBL FFIX,RTZERO,BIGINT,NAN3,FFIX
*
* TABLE FOR FP TO DECIMAL STRING CONVERSION
*
BNDTBL EQU *
ADRTBL BDCNVT,OUTNDC,OUTNDC,OUTNDC,BDCNVT
*
* TABLE FOR MOVE OPERATION
*
MOVTBL EQU *
ADRTBL FMOVE,RTAR2,RTAR2,RTAR2,MOVUN
*
* TABLE FOR ABSOLUTE VALUE FUNCTION
*
ABSTBL EQU *
ADRTBL FABS,FABS,FABS,RTAR2,FABS
*
* TABLE FOR NEGATE FUNTION FUNCTION
*
NEGTBL EQU *
ADRTBL FNEG,FNEG,FNEG,RTAR2,FNEG
*